Встроенные типы ошибок и их обработка
Встроенные типы ошибок
Стандарт ECMAScript определяет встроенные типы ошибок, но пользовательские ошибки могут быть любыми значениями (в том числе строками или объектами). Однако для согласованности и совместимости рекомендуется использовать только экземпляры Error или его подклассов.
Встроенные типы ошибок в JavaScript (ECMAScript 2025)
Все они являются конструкторами и наследуются от глобального класса Error.
Основные встроенные типы ошибок:
Error— базовый класс для всех ошибок.EvalError— ошибка, связанная с функциейeval()(в современном коде почти не используется).RangeError— возникает при передаче значения вне допустимого диапазона (например,new Array(-1)).ReferenceError— возникает при обращении к несуществующей переменной в текущей области видимости.SyntaxError— возникает при разборе синтаксически некорректного кода (например, вJSON.parseилиeval).TypeError— возникает при операции с несовместимым типом (например, вызов нефункции:"hello"()).URIError— возникает при использовании функцийencodeURI,decodeURI,encodeURIComponent,decodeURIComponentс недопустимыми аргументами.
Дополнительные ошибки в средах выполнения:
Эти ошибки не определены в спецификации ECMAScript, но широко поддерживаются в браузерах и Node.js:
AggregateError— используется для представления нескольких ошибок одновременно (например, вPromise.any()).DOMException— ошибка, генерируемая API DOM (в браузерах). Не является подклассомError, но содержит поляnameиmessage.WebAssembly.CompileError,WebAssembly.LinkError,WebAssembly.RuntimeError— специфичные ошибки WebAssembly.
Иерархия (упрощённо):
Error
├── EvalError
├── RangeError
├── ReferenceError
├── SyntaxError
├── TypeError
├── URIError
└── AggregateError
DOMExceptionи ошибки WebAssembly не наследуются отErrorв строгом смысле, но используются аналогично.
Примечания:
- В отличие от Python, JavaScript не имеет встроенных исключений вроде
IndexErrorилиKeyError. Ошибки при работе с массивами или объектами обычно проявляются какTypeError(например, при попытке вызвать метод уundefined) или молча возвращаютundefined. - Проверка типа ошибки выполняется через свойство
.nameили операторinstanceof:try {// ...} catch (e) {if (e instanceof TypeError) { /* ... */ }} - В Node.js также могут возникать системные ошибки (
SystemError), но они представлены как объекты с полямиcode(например,'ENOENT') и не являются отдельными классами.
Как получить список программно (в среде, поддерживающей globalThis):
const errorTypes = [
'Error',
'EvalError',
'RangeError',
'ReferenceError',
'SyntaxError',
'TypeError',
'URIError',
'AggregateError'
].filter(name => typeof globalThis[name] === 'function');
console.log(errorTypes);
Этот подход корректно работает в современных браузерах и Node.js 15+.
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). ECMAScript — это официальный стандарт языка JavaScript, определяющий его синтаксис, семантику и встроенные объекты. Он описывает поведение языка независимо от среды выполнения (браузер, Node.js и… Фундамент для начинающего программиста - что повторить, как работать, чего ожидать. Для создания массивов используется литеральная нотация. Конструктор Array не применяется. Как работать с HTML-элементами, как их создавать, менять. JavaScript — это язык программирования, который изначально создавался для работы в веб-браузерах. Сегодня он является универсальным инструментом, позволяющим создавать серверные приложения, утилиты… Потребность в интерактивности возникла по мере роста сложности веб-сервисов. В частности, уже в первой половине 1990-х года в компании Netscape Communications, разрабатывавшей браузер Netscape… Такое именование представляет собой соглашение между разработчиками. Классический JavaScript не обеспечивает реальной приватности через подчеркивания. JavaScript содержит набор зарезервированных слов, которые имеют специальное значение в языке. Эти слова нельзя использовать в качестве идентификаторов для переменных, функций или классов. Функция Значение Пример --------------------------- Array.isArray() Проверяет, является ли значение массивом Array.isArray(1, 2) concat() Объединяет массивы 1, 2.concat(3, 4) push() Добавляет элемент… Этот шаблон описывает подключение внешних функций, классов или значений из других файлов. Он используется в начале файла и определяет зависимости текущего модуля. JavaScript используется для создания кроссплатформенных мобильных приложений, которые работают на iOS и Android с использованием единой кодовой базы. Что такое функция, параметры, аргументы, возврат значения.Основы JavaScript
Что требуется знать перед началом изучения языка программирования
Рекомендации по разработке на JavaScript
Работа с HTML в JavaScript
Простые приложения на JavaScript
История языка JavaScript
Синтаксис и пунктуация в JavaScript
Ключевые слова языка JavaScript
Встроенные функции JavaScript
Структура и подключение JavaScript-кода
Применение JavaScript в вебе и за его пределами
Функции в JavaScript